package l3.info.Projet.Client;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

public class Utilisateur implements Serializable {

    /** Identifiant */
    private int id;

    /** Mot de passe */
    private String mdp;

    /** Tous les messages écrits par l'utilisateur */
    private List<Message> messages;

    /** Tous les utilisateurs qu'il suit */
    private Map<Integer, String> utilisateurSuivi;

    /** Nom d'utilisateur */
    private String pseudo;

    /** Connexion à la base de données de l'utilisateur */
    // private Connection conn = null;

    /** Permet de savoir s'il l'utilisateur est connecté
     * ou a le droit de se connecter
     */
    private boolean connexion = false;

    /**
     * @param id, le numéro d'utilisateur
     * @param mdp, le mot de passe
     * @param pseudo, le nom d'utilisateur
     * @param messages, la list de messages
     */
    public Utilisateur(int id, String mdp, String pseudo,
            Map<Integer, String> utilisateurSuivi,
            List<Message> messages) {
        this.id = id;
        this.mdp = mdp;
        this.pseudo = pseudo;
        this.utilisateurSuivi = utilisateurSuivi;
        this.messages = messages;
    }

    /**
     * @return id, l'identifiant
     */
    public int getId() {
        return id;
    }

    /**
     * @return mdp, le mot de passe
     */
    public String getMdp() {
        return mdp;
    }

    /**
     * Setter du pseudo
     * @param pseudo, le nom d'utilisateur
     */
    public void setPseudo(String pseudo) {
        this.pseudo = pseudo;
    }

    /**
     * Getter du pseudo
     * @return pseudo, le nom d'utilisateur
     */
    public String getPseudo() {
        return pseudo;
    }

    /**
     * Ajoute les utilisateurs suivis
     */
    public void setUtilisateurSuivi(
            Map<Integer, String> utilisateurSuivi) {
        this.utilisateurSuivi = utilisateurSuivi;
    }

    /**
     * Getter sur les utilisateurs suivis
     * @return utilisateurSuivi
     */
    public Map<Integer, String> getUtilisateurSuivi() {
        return utilisateurSuivi;
    }

    /**
     * Ajoute un message écrit par l'utilisateur
     */
    public void setMessages(List<Message> messages) {
        this.messages = messages;
    }

    /**
     * Getter sur les messages
     * @return messages, la liste des messages
     */
    public List<Message> getMessages() {
        return messages;
    }

    /**
     * Setter de connexion
     * @param connexion, true si l'utilisateur peut se connecter, false sinon
     */
    public void setConnexion(boolean connexion) {
        this.connexion = connexion;
    }

    /**
     * Getter de connexion, permet de savoir si l'utilisateur est connecté
     * ou peut se connecter (modifié par le serveur)
     * @return connexion, à true ou false
     */
    public boolean getConnexion() {
        return connexion;
    }
}
